package ChessEngine;

/**
 * 
 * @author daniel Diese Klasse stellt einen Eintrag für die Transpositiontable
 *         dar. Dieser Eintrag kapselt alle notwendigen Informationen (wie z.b.
 *         den Hash-Key, die Evaluation und die Suchtiefe)
 */
public class TranspositionTableEntry {

	private final long zobrist_hash;
	/**
	 * Die Tiefe wird genau umgekehrt wie die suche abgespeichert. Eine Tiefe
	 * von 0 bedeutet es handel sich um einen Blattknoten. (unterste Ebene des
	 * Baums)
	 */
	private final int depth;

	/**
	 * die Bewertung der Stellung
	 */
	private final int eval;

	/**
	 * der beste gefundene Zug fuer die angebenebe suchtiefe
	 */
	private final String bestMove;

	/**
	 * type kann sein pv=exakter wert, alpha= obere grenze, beta= untere grenze
	 */
	private final String type;

	/**
	 * Erstell einen neuen Transposition Table eintrag
	 * 
	 * @param hash
	 *            der hash-key
	 * @param depth
	 *            die suchtiefe
	 * @param eval
	 *            die bewertung
	 * @param bestMove
	 *            der beste gefundene Zug fue diese stellung
	 * @param type
	 *            der typ des Knotens
	 */
	public TranspositionTableEntry(int hash, int depth, int eval,
			String bestMove, String type) {
		this.zobrist_hash = hash;
		this.depth = depth;
		this.eval = eval;
		this.bestMove = bestMove;
		this.type = type;
	}

	public long getZobristHash() {
		return zobrist_hash;
	}

	public int getDepth() {
		return depth;
	}

	public int getEval() {
		return eval;
	}

	public String getBestMove() {
		return bestMove;
	}

	public String getType() {
		return type;
	}

}
